//------------------------------------------------------------------------------
// <copyright file="WebDataService.svc.cs" company="Microsoft">
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Data.Services;
using System.Data.Services.Common;
using System.Data.SqlClient;
using System.Linq;
using System.ServiceModel.Web;
using System.Web;

namespace businessLayer
{
    public class KlantenService : iKlanten
    {
         
       public List<Klanten> GetAlleKlanten()
        {
            List<Klanten> KlantenLijst = new List<Klanten>();
            SqlConnection myConn = null;
            Klanten alle = new Klanten();
            try
            {
                using (myConn = new SqlConnection(BPcars.GetConnection()))
                {
                    myConn.Open();

                    var cmd = new SqlCommand("Select * from Klanten", myConn);
                    var reader = cmd.ExecuteReader();



                    while (reader.Read())
                    {
                        int klantnr = Convert.ToInt32(reader["klantnr"]);
                        string naam = Convert.ToString(reader["naam"]);
                        string voornaam = Convert.ToString(reader["voornaam"]);
                        string adres = Convert.ToString(reader["adres"]);
                        string postcode = Convert.ToString(reader["postcode"]);
                        string telefoon = Convert.ToString(reader["telefoon"]);
                        string email = Convert.ToString(reader["email"]);
                        float getrouwheidsKm = float.Parse(Convert.ToString(reader["getrouwheidsKm"]));

                        Klanten k = new Klanten { klantnr = klantnr, naam = naam, voornaam = voornaam, adres = adres, postcode = postcode, telefoon = telefoon, email = email, getrouwheidsKm = getrouwheidsKm };
                        KlantenLijst.Add(k);


                    }

                    reader.Close();
                    cmd.Dispose();




                }
            }
            catch (SqlException ex)
            {
                throw;
            }
            return KlantenLijst;
        }

       public bool InsertKlant(Klanten klant)
       {
           SqlConnection connection = null;
           string insert = "insert into Klanten (klantnr,naam,voornaam,adres,postcode, telefoon, email, getrouwheidsKm)" +
                           "Values(@klantnr,@naam,@voornaam,@adres,@postcode,@telefoon,@email,@getrouwheidsKm);";
           SqlCommand insertCommand = new SqlCommand(insert, connection);
           insertCommand.Parameters.AddWithValue("@klantnr", klant.klantnr);
           insertCommand.Parameters.AddWithValue("@naam", klant.naam);
           insertCommand.Parameters.AddWithValue("@voornaam", klant.voornaam);
           insertCommand.Parameters.AddWithValue("@adres", klant.adres);
           insertCommand.Parameters.AddWithValue("@postcode", klant.postcode);
           insertCommand.Parameters.AddWithValue("@telefoon", klant.telefoon);
           insertCommand.Parameters.AddWithValue("@email", klant.email);
           insertCommand.Parameters.AddWithValue("@getrouwheidsKm", klant.getrouwheidsKm);
           try
           {
               using (connection = new SqlConnection(BPcars.GetConnection()))
               {
                   connection.Open();
                   int count = insertCommand.ExecuteNonQuery();
                   if (count > 0)
                   {
                       return true;
                   }
                   else
                   {
                       return false;
                   }
               }
           }
           catch (SqlException ex)
           {
               throw;
           }
           finally
           {
               connection.Close();
           }
       }

       public bool DeleteKlant(int id)
       {
           SqlConnection connection = new SqlConnection(BPcars.GetConnection());
           string delete = "DELETE FROM Klanten " +
                           "WHERE klantnr = @klantnr"; ;
           SqlCommand deleteCommand = new SqlCommand(delete, connection);
           deleteCommand.Parameters.AddWithValue("@klantnr", id);
           try
           {
               connection.Open();
               int count = deleteCommand.ExecuteNonQuery();
               if (count > 0)
               {
                   return true;
               }
               else
               {
                   return false;
               }
           }
           catch (SqlException ex)
           {
               throw;
           }
           finally
           {
               connection.Close();
           }
       }

       public bool updateKlanten (Klanten TeWijzigenKlant)
       {
          
           SqlConnection myConn = null;
         
           try
           {
               using (myConn = new SqlConnection(BPcars.GetConnection()))
               {
                   myConn.Open();

                   // var cmd = new SqlCommand("update table Voertuig where Voertuigid = "+ voertuigNummer , myConn);
                   string update = "UPDATE Klanten SET " +
                           "naam = @naam, " +
                           "voornaam = @voornaam, " +
                           "adres = @adres, " +
                           "postcode = @postcode " +
                           "telefoon = @telefoon " +
                           "email = @email" +
                           "WHERE klantnr = @Oldklantnr ";
                   SqlCommand updateCommand = new SqlCommand(update, myConn);

                   var cmd = new SqlCommand(update);
                   cmd.Parameters.AddWithValue("@naam", TeWijzigenKlant.naam);
                   cmd.Parameters.AddWithValue("@voornaam", TeWijzigenKlant.voornaam);
                   cmd.Parameters.AddWithValue("@adres", TeWijzigenKlant.adres);
                   cmd.Parameters.AddWithValue("@postcode", TeWijzigenKlant.postcode);
                   cmd.Parameters.AddWithValue("@telefoon", TeWijzigenKlant.telefoon);
                   cmd.Parameters.AddWithValue("@email", TeWijzigenKlant.email);
                   cmd.ExecuteNonQuery();
                   cmd.Dispose();




               }
           }

           catch (SqlException ex)
           {
               throw;
           }
           return true;
           //return VoertuigenLijst;
       }
    }
}
